You use the Transaction Tracking Discovery Library Adapter (TTDLA) to generate iDML books suitable for use by Tivoli Business Service Manager. The TTDLA takes XML data extracted from Transaction Tracking and generates a document for further transformation. This document structure is defined by the ttdla.xsd schema.
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ibm.com/tivoli/transactions/tracking/dla"
xmlns:ttdla="http://www.ibm.com/tivoli/transactions/tracking/dla"
elementFormDefault="qualified">
<!--============================ Top-level ===============================-->
<xsd:element name="TransactionTracking">
<xsd:complexType>
<xsd:sequence>
<!--First there is an Input element, with zero or more elements called
'ServerInfo', 'RecordIdentity' and 'Relationship'.-->
<xsd:element name="Input" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ServerInfo" type="ttdla:serverInfoType"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="RecordIdentity" type="ttdla:recordIdentityType"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Relationship" type="ttdla:inputRelationshipType"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!--Second there is an Output element, with zero or more elements called
'ServiceObject'.-->
<xsd:element name="Output" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ServiceObject" type="ttdla:serviceObjectType"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- ============================ Input types =============================-->
<xsd:complexType name="serverInfoType">
<xsd:sequence>
<xsd:element name="ServerAddress" type="xsd:string"
minOccurs="1" maxOccurs="1"/>
<xsd:element name="FQDN" type="xsd:string"
minOccurs="1" maxOccurs="1"/>
<xsd:element name="ServerName" type="xsd:string"
minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="recordIdentityType">
<xsd:sequence>
<xsd:element name="Context" type="ttdla:contextType"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="CallerType" type="xsd:string" use="required"/>
<xsd:attribute name="Index" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="contextType">
<xsd:attribute name="Name" type="xsd:string" use="required"/>
<xsd:attribute name="Value" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="inputRelationshipType">
<xsd:attribute name="Source" type="xsd:int" use="required"/>
<xsd:attribute name="Target" type="xsd:int" use="required"/>
<xsd:attribute name="Type" type="ttdla:inputRelationshipTypeType" use="required"/>
</xsd:complexType>
<!--Input relationships can have a type of 'Request' or 'RequestResponse'-->
<xsd:simpleType name="inputRelationshipTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Request"/>
<xsd:enumeration value="RequestResponse"/>
</xsd:restriction>
</xsd:simpleType>
<!--============================ Output types ============================ -->
<xsd:complexType name="serviceObjectType">
<xsd:sequence>
<xsd:element name="Attributes" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Attribute" type="ttdla:serviceObjectAttributeType"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Relationships" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Relationship"
type="ttdla:serviceObjectRelationshipType"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:string" use="required"/>
<xsd:attribute name="Type" type="xsd:string" use="required"/>
<xsd:attribute name="SourceToken" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="serviceObjectAttributeType">
<xsd:attribute name="Name" type="xsd:string" use="required"/>
<xsd:attribute name="Value" type="xsd:string" use="required"/>
<xsd:attribute name="Method" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="serviceObjectRelationshipType">
<xsd:sequence>
<xsd:element name="ServiceObject"
type="ttdla:serviceObjectType"
minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="Type" type="xsd:string" use="required"/>
<xsd:attribute name="Method" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:schema>
<ServiceObject Id="id1" Type="process.IDML_Activity">
<Attributes>
<Attribute Name="ActivityName" Value="MYAPP#t#TEST TRANSACTION1#s#TEST
TRANSACTION12"/>
<Attribute Name="Label" Value="TEST TRANSACTION12"/>
</Attributes>
<Relationships>
<Relationship Type="Uses">
<ServiceObject Id="id2" Type="process.IDML_Activity"/>
</Relationship>
</Relationships>
</ServiceObject>
Service objects
Each ServiceObject requires a Type and an Id.
The Type value is prepended with com.ibm.dl.schema.cdm. to form the full class name. In the previous example, the class name for both service objects is com.ibm.dl.schema.cdm.process.IDML_Activity. The implementation uses reflection to instantiate the service object by using this class name.
The CDM class generation assumes that all service objects are inheritance of 'com.ibm.dl.production.IDMLManagedElement'. The construction of this object requires a string Id value, which is provided by ServiceObject[@Id].
Relationships
Relationships are defined using the Relationship element. The Type of the element results in instance method of name create<TypeValue> being located and called on the corresponding service object. In the example, an IDML_Activity instance calls createUses() on another IDML_Activity instance.
Attributes
Attributes can accumulate for multiple <ServiceObject> of the same Id, defined in multiple places. If an attribute is not already set in a service object instance, the setAttribute<Attribute> method is searched using reflection and called upon to set the corresponding attribute value. In the example, the service object is setAttributeActivityName and setAttributeLabel.